// 前端写死的公共的select配置
define([
	"publicTool/method",
	"text!template/select-config.html!strip",
], function (Method, selectTpl) {
	var selectConfig = {};

	// 属性

	// =是否状态 1->是 2->否
	selectConfig.yesOrNoStatus = [
		{
			name: "请选择",
			value: ""
		},
		{
			name: "是",
			value: "1"
		},
		{
			name: "否",
			value: "2"
		}
	]

	// 方法
	// =渲染是否状态
	// 参数opt 配置项
	// ele select对象
	selectConfig.renderYesOrNoStatus = function(opt){
		this.renderDataOption(opt, "yesOrNoStatus", this.yesOrNoStatus);
	}

	// =渲染年份
	// 参数一 opt 配置项
	// 参数二 notEmptyValue 是否显示 空值对应的 请选择 true->不显示 false->显示
	// ele select对象
	selectConfig.renderYear = function(opt, notEmptyValue){
		this.renderDataOption(opt, "year", this.getYearData(3, 6, notEmptyValue), this.getCurYearMonth().year);
	}

	// =渲染月份
	// 参数opt 配置项
	// ele select对象
	selectConfig.renderMonth = function(opt){
		this.renderDataOption(opt, "month", this.getMonthData(), this.getCurYearMonth().month);
	}

	// 获取最终的渲染数据
	// 参数一 想要获取的对象属性对象
	selectConfig.getRenderData = function(attr){
		var oData = {};
		oData.data = attr;
		return oData;
	}

	// 渲染数据option项
	// 参数一 自定义的配置项
	// 参数二 默认的select id
	// 参数三 渲染option的数据 结构必须为 [{key1: val1, key2: val2},{key1: val1, key2: val2}]
	// 参数四 默认项对应的value值 tip:这个值可以手动输入（手动输入则不用传值）
	selectConfig.renderDataOption = function(opt, ele, renderData, defaultValue){
		var defaults = {
			ele: ele,
			isDefault: false,//是否默认值
			defalutSelfValue: 0//默认值需手动设置的索引值(数组对应对象value的索引，从0开始)[需配合上面的参数一起使用]
		}
		var config = $.extend({}, defaults, opt);
		var oSelect = $("#" + config.ele);
		Method.artRenderString( oSelect, $(selectTpl).html(), this.getRenderData( renderData ) );
		// 设置默认的值
		if(config.isDefault){
			defaultValue = defaultValue ? defaultValue : renderData[config.defalutSelfValue].value;
			oSelect.find("option[value="+ defaultValue +"]").prop("selected", true).attr("data-data-reset", "selected");
		}
	}

	// 获取年份配置
	// 参数一 prev 往前数多少年
	// 参数二 next 往后数多少年
	// 参数三 notEmptyValue 是否显示 空值对应的 请选择 true->不显示 false->显示
	selectConfig.getYearData = function(prev, next, notEmptyValue){
		var iCurYear = this.getCurYearMonth().year;
		var iPrev = prev || 3;
		var iNext = next || 6;
		var aData = [];

		if(!notEmptyValue){
			aData = [
				{
					name: "请选择",
					value: ""
				}
			];	
		}
		
		// 渲染前面的年
		for(var i = iPrev; i > 0; i--){
			var oData = {};
			oData.name = (iCurYear - i);
			oData.value = iCurYear - i;
			aData.push(oData);
		}
		// 渲染后面的年
		for(var j = 0; j < iNext; j++){
			var oData = {};
			oData.name = (iCurYear + j);
			oData.value = iCurYear + j;
			aData.push(oData);
		}
		return aData;
	}

	// 获取月份配置
	selectConfig.getMonthData = function(){
		var aData = [
			{
				name: "请选择",
				value: ""
			}
		];
		
		// 拼装月份
		for(var i = 0; i < 12; i++){
			var oData = {};
			oData.name = i+1;
			oData.value = i+1;
			aData.push(oData);
		}
		return aData;
	}

	// 获取当前年月
	selectConfig.getCurYearMonth = function(){
		var oDate = new Date();
		var iYear = localStorage.curYear ? localStorage.curYear : oDate.getFullYear();
		var iMonth = localStorage.curMonth ? localStorage.curMonth : oDate.getMonth()+1;
		return {year: iYear, month: iMonth};
	}

	return selectConfig;
})